﻿using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lotus.Domain.Input
{
    /// <summary>
    /// 发送路特斯消息输入信息
    /// </summary>
    public class SendLotusMessageInput
    {
        /// <summary>
        /// 租户id
        /// </summary>
        [JsonProperty("tenantId")]
        public string? TenantId { get; set; }

        /// <summary>
        /// 租户流水id
        /// </summary>
        [JsonProperty("tenantBizId")]
        public string TenantBizId { get; set; }

        /// <summary>
        /// 延迟秒数，无需延迟写0
        /// </summary>
        [JsonProperty("delaySeconds")]
        public int DelaySeconds { get; set; }

        /// <summary>
        /// 通知类型 
        /// 0201表示短信普通文本
        /// 0301 表示邮件普通文本
        /// 0601 表示飞书的普通文本，
        /// 0602表示飞书富文本消息
        /// 0603表示飞书的卡片消息。
        /// 0501表示企微的普通消息。
        /// 0503表示企微的卡片消息。
        /// 06表示飞书，01表示普通文本，以此组合
        /// </summary>
        [JsonProperty("notifyChannelEnum")]
        public string NotifyChannelEnum { get; set; }

        /// <summary>
        /// 消息内容体，jsonStr形式，具体格式看下面的对应的消息模型
        /// </summary>
        [JsonProperty("msgBody")]
        public string MsgBody { get; set; }

        /// <summary>
        /// 文件数据列表 邮件消息可以使用该参数
        /// 注:该参数不计入签名计算
        /// </summary>
        [JsonProperty("files")]
        public List<SendLoutsEmailFileInput>? Files { get; set; }

        /// <summary>
        /// md5签名，常规签名方式，参数名的字母升序排列非空请求参数，使用URL键值对的格式（即key1=value1&key2=value2…）参数拼上tenantSecret
        /// </summary>
        [JsonProperty("sign")]
        public string? Sign { get; set; }
    }

    /// <summary>
    /// 发送路特斯消息邮件消息输入信息
    /// </summary>
    public class SendLotusEmailMessageInput
    {
        /// <summary>
        /// 接收人 可以传员工编号 受receiverType控制 英文逗号分隔
        /// 例:"receiver":"xxx@xx.com,abc@xx.com"
        /// </summary>
        [JsonProperty("receiver")]
        public string Receiver { get; set; }

        /// <summary>
        /// 接受人类型: 
        /// 1: 员工的飞书user_id
        /// 2:员工的工号， 
        /// 3:部门的飞书department_id
        /// 4: 部门的在内部系统的编码(员工中心的orgCode
        /// 5.员工的邮箱
        /// 6.飞书群chat_id
        /// 7.消息中心群id
        /// 该接口目前支持使用2,5四种类型
        /// </summary>
        [JsonProperty("receiverType")]
        public int ReceiverType { get; set; }

        /// <summary>
        /// 邮件标题
        /// </summary>
        [JsonProperty("subject")]
        public string Subject { get; set; }

        /// <summary>
        /// 抄送人 可以传员工编号 受receiverType控制 英文逗号分隔
        /// 例:"cc":"xxx@xx.com,abc@xx.com"
        /// </summary>
        [JsonProperty("cc")]
        public string? CC { get; set; }

        /// <summary>
        /// 邮件内容 支持html语法
        /// </summary>
        [JsonProperty("content")]
        public string Content { get; set; }
    }

    /// <summary>
    /// 发送路特斯消息邮件文件输入信息
    /// </summary>
    public class SendLoutsEmailFileInput
    {
        /// <summary>
        /// 文件名
        /// </summary>
        [JsonProperty("fileName")]
        public string? FileName { get; set; }

        /// <summary>
        /// 文件byte数组base64后的字符串
        /// </summary>
        [JsonProperty("fileData")]
        public string? FileData { get; set; }
    }
}
